/**
 * <b>项目名称：</b>网络应用框架<br/>
 * <b>包    名：</b>com.hhwy.framework.persistent.query<br/>
 * <b>文 件 名：</b>IWhereClause.java<br/>
 * <b>版本信息：</b><br/>
 * <b>日    期：</b>2014年8月2日-上午8:55:30<br/>
 * <b>Copyright (c)</b> 2014恒华伟业科技股份有限公司-版权所有<br/>
 * 
 */
package com.hhwy.framework.persistent.query;

import java.util.List;
import java.util.Map;

 /**
 * <b>类 名 称：</b>IWhereClause 组织where子句<br/>
 * <b>类 描 述：</b><br/>
 * <b>创 建 人：</b>Administrator<br/>
 * <b>修 改 人：</b>Administrator<br/>
 * <b>修改时间：</b>2014年8月2日 上午8:55:30<br/>
 * <b>修改备注：</b><br/>
 * @version 1.0.0<br/>
 */
public interface IWhereClause {
	
	
	/**
	 * whereJpql(获取查询条件子句)<br/>
	 * @return 
	 * String
	 * @exception 
	 * @since  1.0.0
	 */
	public String whereJpql();
	/**
	 * queryParams(获取查询参数值)<br/>
	 * @return 
	 * Map<String,Object>
	 * @exception 
	 * @since  1.0.0
	 */
	public List<Map<String, Object>> queryParams();
	/**
	 * orderParams(获取排序条件)<br/>
	 * @return 
	 * Map<String,String>
	 * @exception 
	 * @since  1.0.0
	 */
	public List<Map<String, String>> orderParams();
	/**
	 * andSubClause(添加自定义'与'条件，不支持参数)<br/>
	 * @param subClause 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause andSubClause(String subClause);
	/**
	 * orSubClause(添加自定义'或'条件，不支持参数)<br/>
	 * @param subClause 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause orSubClause(String subClause);
	/**
	 * andBrackets(添加'与'子句，包含在括号里面)<br/>
	 * @param where 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause andBrackets(IWhereClause where);
	/**
	 * orBrackets(添加'或'子句，包含在括号里面)<br/>
	 * @param where 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause orBrackets(IWhereClause where);
	/**
	 * andLT(添加'与'小于条件)<br/>
	 * @param property
	 * @param value 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause andLT(String property, Object value);
	
	public IWhereClause andLTE(String property, Object value);
	
	/**
	 * andLT(多次添加'与'小于条件)<br/>
	 * @param property
	 * @param alias
	 * @param value 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause andLT(String property, String alias, Object value);
	public IWhereClause andLTE(String property, String alias, Object value);
	/**
	 * orLT(添加'或'小于条件)<br/>
	 * @param property
	 * @param value 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause orLT(String property, Object value);
	public IWhereClause orLTE(String property, Object value);
	/**
	 * orLT(多次添加'或'小于条件)<br/>
	 * @param property
	 * @param alias
	 * @param value 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause orLT(String property, String alias, Object value);
	public IWhereClause orLTE(String property, String alias, Object value);
	/**
	 * andGT(添加'与'大于条件)<br/>
	 * @param property
	 * @param value 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause andGT(String property, Object value);
	public IWhereClause andGTE(String property, Object value);
	/**
	 * andGT(多次添加'与'大于条件)<br/>
	 * @param property
	 * @param alias
	 * @param value 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause andGT(String property, String alias, Object value);
	public IWhereClause andGTE(String property, String alias, Object value);
	/**
	 * orGT(添加'或'大于条件)<br/>
	 * @param property
	 * @param value 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause orGT(String property, Object value);
	public IWhereClause orGTE(String property, Object value);
	/**
	 * orGT(多次添加'或'大于条件)<br/>
	 * @param property
	 * @param alias
	 * @param value 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause orGT(String property, String alias, Object value);
	public IWhereClause orGTE(String property, String alias, Object value);
	/**
	 * and(添加'与（and）'条件), 等于<br/>
	 * @param property
	 * @param value
	 * @return 
	 * String
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause and(String property, Object value);
	/**
	 * and(多次添加'与（and）'条件)<br/>
	 * @param property
	 * @param alias
	 * @param value 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause and(String property, String alias, Object value);
	/**
	 * or(添加'或（or）'条件) , 等于<br/>
	 * @param property
	 * @param value
	 * @return 
	 * String
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause or(String property, Object value);
	/**
	 * or(多次添加'或（or）'条件)<br/>
	 * @param property
	 * @param alias
	 * @param value 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause or(String property, String alias, Object value);
	/**
	 * andNot(添加'与'的不等于条件)<br/> 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause andNot(String property, Object value);
	/**
	 * andNot(多次添加'与'的不等于条件)<br/>
	 * @param property
	 * @param alias
	 * @param value 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause andNot(String property, String alias, Object value);
	/**
	 * orNot(添加'或'的不等于条件)<br/> 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause orNot(String property, Object value);
	/**
	 * orNot(多次添加'或'的不等于条件)<br/>
	 * @param property
	 * @param alias
	 * @param value 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause orNot(String property, String alias, Object value);
	/**
	 * and(添加'与（and）'条件, like模糊查询)<br/>
	 * @param property
	 * @param value
	 * @return 
	 * String
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause andLike(String property, Object value);
	/**
	 * andLike 多次添加'与（and）'条件, like模糊查询<br/>
	 * @param property
	 * @param alias
	 * @param value
	 * @return 
	 * IWhereClause
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause andLike(String property, String alias, Object value);
	/**
	 * or(添加'或（or）'条件, like模糊查询) <br/>
	 * @param property
	 * @param value
	 * @return 
	 * String
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause orLike(String property, Object value);
	/**
	 * orLike(多次添加'或（or）'条件, like模糊查询)<br/>
	 * @param property
	 * @param alias
	 * @param value 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause orLike(String property, String alias, Object value);
	/**
	 * addOrder(添加排序)<br/>
	 * @param property
	 * @param orderType 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause addOrder(String property, String orderType);
	
	/**
	 * addOrder(添加排序)<br/>
	 * @param property
	 * @param orderType 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause addDescOrder(String property);
	/**
	 * addOrder(添加排序)<br/>
	 * @param property
	 * @param orderType 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause addAscOrder(String property);
	/**
	 * setOrderParams(添加排序)<br/>
	 * @param orderParams 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	public IWhereClause addOrder(Map<String, String> orderParams);
}
